package demo02_oop

class Computer{

  //电脑的必备组成部分键盘，因为任何操作都需要用到，所有定义为成员内部类
  class Keyboard{
    val color: String = "black"
    val keyNum: Int = 108

    def inputWords(useage:String) = {
      println(s"我是电脑的键盘，我可以${useage}")
    }
  }

  //电脑类的普通方法：电脑可以玩游戏
  def playGame(game:String) = {
    //玩游戏需要用到手柄，且只有玩游戏这个操作是需要用到，其他操作用不到，所以定义为方法内部类
    class HandShank{
      val level:String = "high"
      def playGameByHandShank(gameName:String) = {
        println(s"游戏手柄可以玩${gameName}")
      }
    }

    new Keyboard().inputWords("前进后退")
    new HandShank().playGameByHandShank(game)
  }

  def writeProgram() = {
    //在外部类的任何方法中都可以使用成员内部类
    val keyboard = new Keyboard()
    keyboard.inputWords("写程序")

    //这个内部类是方法内部类，只在特定方法中有效，这里超出了作用域范围，不能使用
//    new HandShank()
  }
}

object Demo03_innerClass {

}
